package com.zmn.oms.dubbo.dto.zmn.order;

import com.zmn.oms.dubbo.dto.common.work.OrderDetailDiscountDRO;
import com.zmn.oms.dubbo.dto.zmn.serviceitem.OrderServiceItemDRO;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 类描述：微信工单详情
 *
 * @author lujia
 * @date 2019/01/23 16:57
 */
@Data
public class WeixinOrderDetailDRO implements Serializable {

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 用户名称
     */
    private String userName;

    /**
     * 订单Id (订单code)
     */
    private Long orderId;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 退款状态
     */
    private Integer refundStatus;

    /**
     * 退款金额
     */
    private Integer refundAmount;

    /**
     * 状态名称
     */
    private String statusName;

    /**
     * 下单时间
     */
    private Date receiveTime;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 预约时间说明（今天 明天 后天 本周..等）
     */
    private String dutyTimeText;

    /**
     * 预约状态（挂起状态）
     */
    private Integer dutyStatus;

    /**
     * 完成时间
     */
    private Date completeTime;

    /**
     * 退款时间
     */
    private Date refundTime;

    /**
     * 定金支付时间
     */
    private Date depositTime;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 取消时间
     */
    private Date cancelTime;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 应收总额
     */
    private Integer totalAmount;

    /**
     * 实付金额
     */
    private Integer factAmount;

    /**
     * 预付金
     */
    private Integer prepayAmount;

    /**
     * 预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer prepayStatus;

    /**
     * 预付款支付时间
     */
    private Date prepayTime;

    /**
     * 渠道预付款
     */
    private Integer channelPrepayAmount;

    /**
     * 优惠总额
     */
    private Integer discountAmount;

    /**
     * 定金
     */
    private Integer depositAmount;

    /**
     * 待支付金额
     */
    private Integer waitPayAmount;

    /**
     * 工程师收款金额
     */
    private Integer masterAmount;

    /**
     * 工程师支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer masterPayStatus;

    /**
     * 产品 （服务内容）
     */
    private List<OrderProductDRO> orderProductList;

    /**
     * 订单优惠明细
     */
    private List<OrderDetailDiscountDRO> orderDiscountList;

    /**
     * 优惠券：使用的优惠券、现金券、代金券换算成的金额，可叠加；
     */
    private Integer discountCoupon;

    /**
     * 其他优惠
     */
    private Integer otherDiscount;

    /**
     * 工程师Id
     */
    private Integer masterId;

    /**
     * 工程师名称
     */
    private String masterName;

    /**
     * 评价内容
     */
    private OrderCommentDRO comment;

    /**
     * 用户拍照
     */
    private List<String> userImageSrcList;

    /**
     * 工单Id
     */
    private Long workId;

    /**
     * 渠道Id
     */
    private Integer channelId;

    /**
     * 城市Id
     */
    private Integer cityId;

    /**
     * 是否一口价 1 否 2 是
     */
    private Integer finalPrice;

    /**
     * 街道
     */
    private String street;

    /**
     * 客户地址具体门牌号
     */
    private String address;

    /**
     * 用户电话
     */
    private String userPhone;

    /**
     * 服务分类Id
     */
    private Integer servCategId;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 工单log
     */
    private List<OrderLogDRO> orderLogList;

    /**
     * 订单服务项
     */
    private List<OrderServiceItemDRO> orderServiceItemList;

    /**
     * 服务项类型，目前仅支持两种类型： 1.工单服务项 2.故障服务项
     * 若值不等于2，则均作为值等于1处理
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    private Integer servItemType;

    /**
     * 订单类型：1 新单、2 返修单、3 退款单
     */
    private Integer type;

    /**
     * 完成前/后退款状态 1.完成前退款 2 完成后退款
     */
    private Integer completeRefundStatus;

    /**
     * 返修次数
     */
    private Integer reworkThirdTime;

    /**
     * 活动id(迟到补偿活动id)
     * > 0 表示符合迟到补偿配置，前端显示准时到
     */
    private Integer discountActivityId;

    /**
     * 迟到补偿金额
     * 不为空，表示有迟到补偿金额
     */
    private Integer lateAmount;

    /**
     * 派单标示 1.一次派单  2.多次派单(包含撤回未派单)
     */
    private Integer multipleDistribute;

    /**
     * 是否待取消（1：否，2：是）
     */
    private Integer waitCancel;

    /**
     * 是否是三日退（1：否，2：是）
     */
    private Integer threeDaysRefund;

    /**
     * 最后一次退款金额
     */
    private Integer lastRefundAmount;

    /**
     * 退款单数量
     */
    private Integer refundOrderCount;
}
